home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 5 / QRZ Ham Radio Callsign Database - Volume 5.iso / unix / src / call.c < prev    next >
C/C++ Source or Header  |  1994-06-02  |  2KB  |  140 lines

  1.  
  2.  
  3. #include "cb.h"
  4.  
  5. /*
  6. **    call
  7. **
  8. **    A UNIX command line program to search the callsign database
  9. **
  10. **    Copyright (c) 1993 by Fred Lloyd, AA7BQ
  11. */
  12.  
  13. char *s;
  14. int stop_this = 0;
  15.  
  16. main(argc,argv)
  17. int argc;
  18. char *argv[];
  19. {
  20.     char    call[8];
  21.     char    *line;
  22.     char    *p;
  23.     int    alph;
  24.     int    pagit;
  25.     int    found;
  26.     int    i;
  27.     int    len;
  28.     long    idsize;
  29.     char    buf[512];
  30.     FILE *fp;
  31.     if (argc < 2)
  32.     {
  33.         printf("usage: %s <callsign>\n",argv[0]);
  34.         printf("   or: %s -a -n <lookup name>\n",argv[0]);
  35.         exit(1);
  36.     }
  37.  
  38.     i = 1;
  39.     alph = 0;
  40.     pagit = 1;
  41.     argv++;
  42.     while ((i<argc) && argv[0][0] == '-')
  43.     {
  44.         switch(toupper(argv[0][1]))
  45.         {
  46.         case 'A':        /* make alpha search */
  47.             alph = 1;
  48.             argv++;
  49.             break;
  50.         case 'N':        /* don't pause flag */
  51.             pagit = 0;
  52.             argv++;
  53.             break;
  54.         default:
  55.             argv++;
  56.             break;
  57.         }
  58.         i++;
  59.     }
  60.  
  61.     if ((fp=fopen("callbook.db","r")) == NULL)
  62.     {
  63.         printf("Error opening callbook.db\n");
  64.         exit(1);
  65.     }
  66.  
  67.     if (alph)
  68.     {
  69.         alphacall(fp,argc,argv,pagit);
  70.         exit(0);
  71.     }
  72.  
  73.     printf("\n");
  74.     i = 0;
  75.     while (*argv)
  76.     {
  77.         strncpy(call,*argv++,7);
  78.         call[7] = '\0';
  79.  
  80.         found = clook(fp,call,buf);
  81.         if (found && (strlen(buf) < 20))
  82.         {
  83.             p = strchr(buf,',');
  84.             if (p)
  85.                 p++;
  86.             strcpy(call,p);
  87.             found = clook(fp,call,buf);
  88.         }
  89.  
  90.         if (found)
  91.         {
  92.             pcall(buf,printf);
  93.             i++;
  94.             if (pagit && (i%5 == 0))
  95.                 n_any_key(0,printf);
  96.         }
  97.         else
  98.         printf("\n%s not found in callbook database.\n",call);
  99.     }
  100.  
  101.     exit(0);
  102. }
  103.  
  104.  
  105. alphacall(fp,argc,argv,pagit)
  106. FILE *fp;
  107. int argc;
  108. char *argv[];
  109. int pagit;
  110. {
  111.     char buf[1024];
  112.     char *p;
  113.     int found;
  114.     char sav[1024];
  115.  
  116.     memset(buf,0,sizeof(buf));
  117.     memset(sav,0,sizeof(sav));
  118.  
  119.     while(*argv)
  120.     {
  121.         strcat(buf,*argv++);
  122.         strcat(buf," ");
  123.     }
  124.     strcpy(sav,buf);
  125.  
  126.     if (p = strrchr(buf,' '))
  127.         *p = '\0';
  128.  
  129.     printf("\n");
  130.     if ((found = namefind(fp,buf,pagit,printf)) == 0)
  131.         printf("\n%s not found in callbook database.\n",buf);
  132.     else if (found > 0)
  133.         printf("%d record(s) matched pattern '%s'\n",found,sav);
  134.     else
  135.         printf("Output interrupted after %d record(s) shown\n",
  136.             abs(found));
  137.     return;
  138. }
  139.  
  140.